home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / mac / soundutl / rvrb52cp.hqx / Reverb v5.2 folder / Reverb programs / Large Hall < prev    next >
Encoding:
Text File  |  1993-10-06  |  2.3 KB  |  81 lines

  1. //
  2. // Large Hall.
  3. //
  4. // This is really a monophonic to stereo reverberator.
  5. // The stereo inputs are summed to a monophonic signal
  6. // and sent through the reverberator. Stereo outputs are
  7. // obtained by summing different sets of taps within the
  8. // reverberator. This creates spatial impression by
  9. // decorrelating the stereo outputs, although this method
  10. // is not as good as using different reverberators for
  11. // each channel. Note that by adjusting the tap offsets,
  12. // one can create particular localization cues for the
  13. // early and later echoes.
  14. //
  15. // The reverberator itself is based on cascaded and nested
  16. // allpass filters. These create a sufficiently dense echo
  17. // buildup and do not suffer from a fluttery decay like
  18. // the Schroeder style reverberator based on comb filters.
  19. // 
  20. // The reverberation time is set by adjusting the feedback
  21. // gain in the comb_lpf instruction. The brightness of the
  22. // reverb is set by adjusting the lowpass cutoff in the same
  23. // instruction. The amount of direct sound is set by adjusting
  24. // the direct taps in the output FIR intructions. If clipping
  25. // occurs, the inputs should be further attenuated.
  26. //
  27. // Bill Gardner, October, 1992
  28. //
  29. #include    "macros.rvb"
  30.  
  31. //
  32. // MIDI ctl 1 -> effects mix
  33. // MIDI ctl 2 -> reverberation time
  34. // MIDI ctl 3 -> diffusion
  35. // MIDI ctl 4 -> brightness
  36. //
  37. #define mix    init(0.5,ctl(1))
  38. #define decay    range(init(40/127,ctl(2)),0.4,0.8)
  39. #define diffuse 2 * init(0.5,ctl(3))
  40. #define bright init(25/127,0.01+ctl(4))
  41.  
  42. addr("x");
  43. // make monophonic mix at location 0
  44. fir(0,
  45.     Lin, 0.5,
  46.  Rin, 0.5);
  47. // lowpass filter
  48. lpf(2, bright * 8000);
  49.  
  50. // two series allpasses
  51. allpass(3, 334, 0.3 * diffuse);
  52. allpass(335, 846, 0.3 * diffuse);
  53.  
  54. // allpass within allpass
  55. allpass(1768, 5623, 0.5 * diffuse);
  56. allpass(1769, 4501, 0.25 * diffuse);
  57. move(7120, y:0);
  58.  
  59. // two serial allpass within single allpass
  60. addr("y");
  61. allpass(1, 5293, 0.5 * diffuse);
  62. allpass(2, 3335, 0.25 * diffuse);
  63. allpass(3336, 4659, 0.25 * diffuse);
  64.  
  65. // feedback through lowpass filter
  66. comb_lpf(x:1, y:5300, decay, 8000 * bright);
  67.  
  68. // left channel output taps, first tap is direct sound
  69. fir(Lout,
  70.     Lin, 1 - mix,
  71.     x:1000,    0.6 * mix,
  72.     x:7000,    0.3 * mix,
  73.     y:5300,    0.3 * mix);
  74.  
  75. // right channel output taps, first tap is direct sound
  76. fir(Rout,
  77.     Rin, 1 - mix,
  78.     x:1000,    0.6 * mix,
  79.     x:7035,    0.3 * mix,
  80.     y:5295,    0.3 * mix);
  81.